package com.ruoyi.system.service.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.SysSendTaskMapper;
import com.ruoyi.system.domain.SysSendTask;
import com.ruoyi.system.service.ISysSendTaskService;

/**
 * 群发记录总单Service业务层处理
 * 
 * @author ruoyi
 * @date 2024-06-20
 */
@Service
public class SysSendTaskServiceImpl implements ISysSendTaskService 
{
    @Autowired
    private SysSendTaskMapper sysSendTaskMapper;
    @Autowired
    private JdbcTemplate jdbcTemplate;
    /**
     * 查询群发记录总单
     * 
     * @param id 群发记录总单主键
     * @return 群发记录总单
     */
    @Override
    public SysSendTask selectSysSendTaskById(Long id)
    {
        return sysSendTaskMapper.selectSysSendTaskById(id);
    }
    /**
     * 导出准备

     */
    @Override
    public  Map<String,Map<String,List<Map<String,String>>>>  inintReturnTxt(Long[] ids)
    {
        List<Map<String, Object>> ttmap;
        if (ids!=null&&ids.length>0){
            Long id=ids[0];
            ttmap=   jdbcTemplate.queryForList
                    (" SELECT group_number,gzhtype,member FROM  sys_send_task_detail where sendtaskid="+id+" ORDER BY group_number");

        }else {
          ttmap=   jdbcTemplate.queryForList
                    (" SELECT group_number,gzhtype,member FROM  sys_send_task_detail where  TO_DAYS(create_time) = TO_DAYS(NOW()) ORDER BY group_number");

        }
        //查询当日发送记录

        Map<String,Map<String,List<Map<String,String>>>> resultMap=new HashMap<>();
        Map<String,List<String>> sendRecordMap=new HashMap<>();
        for (int i=0;i<ttmap.size();i++){
            Map<String, Object> innerMap=ttmap.get(i);
            String group_number=innerMap.get("group_number").toString().trim();
            String gzhtype=innerMap.get("gzhtype").toString().trim();
            String member=innerMap.get("member").toString().trim();
            String sendtypeInfo="timestartbegain";//以这个开头
            if (sendRecordMap.containsKey(group_number)){
                List<String> innerList=sendRecordMap.get(group_number) ;
                innerList.add(gzhtype);
                sendtypeInfo=sendtypeInfo+innerList.size();
            }else {
                List<String> innerList=new ArrayList<>();
                innerList.add(gzhtype);
                sendRecordMap.put(group_number,innerList);
                sendtypeInfo=sendtypeInfo+innerList.size();
            }
            Map<String,List<Map<String,String>>> tep1map=new HashMap<>();
            if (resultMap.containsKey(member)){
                tep1map=resultMap.get(member);
            }else {
                resultMap.put(member,tep1map);
            }
            List<Map<String,String>> tep2List=new ArrayList<>();
            if (tep1map.containsKey(sendtypeInfo)){
                tep2List=tep1map.get(sendtypeInfo);
            }else {
                tep1map.put(sendtypeInfo,tep2List);
            }
            Map<String,String> groupAndGzhMap=new HashMap<>();
            groupAndGzhMap.put(group_number,gzhtype);
            tep2List.add(groupAndGzhMap);
        }
return resultMap;
    }
    /**
     * 查询群发记录总单列表
     * 
     * @param sysSendTask 群发记录总单
     * @return 群发记录总单
     */
    @Override
    public List<SysSendTask> selectSysSendTaskList(SysSendTask sysSendTask)
    {


        return sysSendTaskMapper.selectSysSendTaskList(sysSendTask);
    }

    /**
     * 新增群发记录总单
     * 
     * @param sysSendTask 群发记录总单
     * @return 结果
     */
    @Override
    public int insertSysSendTask(SysSendTask sysSendTask)
    {
        sysSendTask.setCreateTime(DateUtils.getNowDate());
        return sysSendTaskMapper.insertSysSendTask(sysSendTask);
    }

    /**
     * 修改群发记录总单
     * 
     * @param sysSendTask 群发记录总单
     * @return 结果
     */
    @Override
    public int updateSysSendTask(SysSendTask sysSendTask)
    {
        sysSendTask.setUpdateTime(DateUtils.getNowDate());
        return sysSendTaskMapper.updateSysSendTask(sysSendTask);
    }

    /**
     * 批量删除群发记录总单
     * 
     * @param ids 需要删除的群发记录总单主键
     * @return 结果
     */
    @Override
    public int deleteSysSendTaskByIds(Long[] ids)
    {
        return sysSendTaskMapper.deleteSysSendTaskByIds(ids);
    }

    /**
     * 删除群发记录总单信息
     * 
     * @param id 群发记录总单主键
     * @return 结果
     */
    @Override
    public int deleteSysSendTaskById(Long id)
    {
        return sysSendTaskMapper.deleteSysSendTaskById(id);
    }
}
